#include "PauseScene.h"
#include "MenuScene.h"

void PauseScene::Init(){
			
	// obtenemos una captura de pantalla de la escena anterior
	imgFondo.CopyScreen(theEngine.GetRenderWindow());
	fondo.SetImage(imgFondo);
	fondo.FlipY(true);
	fondo.SetColor(sf::Color(255, 255, 255, 128));
	
	// propiedades para el sprite con la palabra "pausa"
	const sf::Image &imgPausa = theTextureManager.GetTexture("../data/Sprites/pausa.png");
	pausa.SetImage(imgPausa);
	posPausa = sf::Vector2f(theEngine.GetRenderWindow().GetView().GetRect().Right/2,theEngine.GetRenderWindow().GetView().GetRect().Bottom/2);
	pausa.SetCenter(imgPausa.GetWidth()/2.0, imgPausa.GetHeight()/2.0);
	pausa.SetScale(1.5f,1.5f);
	
	// propiedades del texto
	pauseText.SetSize(15);
	pauseText.SetPosition(theEngine.GetRenderWindow().GetView().GetRect().Right/2,theEngine.GetRenderWindow().GetView().GetRect().Bottom/2 + 200);
	pauseText.SetText("Presione cualquier tecla para continuar\n o ESCAPE para salir al menu principal");
	pauseText.SetCenter(pauseText.GetRect().GetWidth()/2, pauseText.GetRect().GetHeight()/2);
	pauseText.SetColor(sf::Color(102, 102, 138));

    cout<<"PAUSA INICIADA"<<endl;
}


void PauseScene::Cleanup(){
	cout<<"Pause Eliminado"<<endl;
}

void PauseScene::ProcessEvent(const sf::Event &e){
	// si presionamos alguna tecla o boton del mouse, se vuelve a la escena anterior
	// si se presiona escape se vuelve al menu principal
	if(e.Type == sf::Event::KeyPressed || e.Type == sf::Event::MouseButtonPressed){
		if(e.Type == sf::Event::KeyPressed && e.Key.Code == sf::Key::Escape){
			theEngine.ChangeScene(new MenuScene());			
		}else{
			EndScene();
			
		}
	}
}


void PauseScene::Update(const float &dt){
	theEngine.GetRenderWindow().SetView(theEngine.GetRenderWindow().GetDefaultView());
	fase += dt;
	pausa.SetPosition(posPausa.x, posPausa.y+20*sin(1.5*fase));
}


void PauseScene::Render(sf::RenderWindow &w){
	w.Clear(sf::Color::White);
	w.Draw(fondo);
	w.Draw(pausa);
	w.Draw(pauseText);	
}
